using System;
namespace NDODS.DAP.Server
{
	
	/// <summary>Represents the common interface of the two types of clause used by the
	/// constraint expression (CE) parser: ITopLevelClause and ISubClause.
	/// See these interfaces for more about CE parsing and evaluation.
	/// 
	/// </summary>
	/// <author>  joew 
	/// </author>
	public interface IClause
	{
		/// <summary>Returns an ordered list of this clause's sub-clauses.  If the
		/// clause has no sub-clauses, an empty list will be returned.  
		/// </summary>
		System.Collections.IList Children
		{
			get;
			
		}
		/// <summary>A clause is considered "constant" iff it and its subclauses do not
		/// refer to data values from the dataset being constrained.  A
		/// constant clause is defined as soon as it is created, and is
		/// guaranteed not to change its value during its lifetime.  
		/// </summary>
		bool Constant
		{
			get;
			
		}
		/// <summary>Returns whether or not the clause has a defined value. Non-constant
		/// clauses do not have a defined value until they are evaluated for the
		/// first time. Methods for evaluating are found in the ITopLevelClause
		/// and ISubClause interfaces. 
		/// </summary>
		bool Defined
		{
			get;
			
		}
	}
}